This invention relates generally to communications networks and, more specifically, to cyclic redundancy checks for communications networks.
Communications networks often transfer data between devices located at different locations in the network. Many communication networks transfer the data in packets. Unfortunately, errors may occur during the communication. Additional information may be added to the packets to allow the communicating devices to detect communication errors. A cyclic redundancy check (CRC) is a common method for adding information to the communication packets to detect errors.
Communication networks that operate at high data rates may perform operations related to the communication on many bits of data in parallel so that the operations may be performed at a slower clock rate while maintaining the high data rate. Although CRC algorithms are commonly defined for serial operation on a sequence of bits of data, parallel CRC calculations are used to perform the operations at slower clock rates.
As data rates increase in communication networks, the number of bits of data operated on in parallel may also increase. The increased number of parallel data bits may increase complexity of parallel operations. Additionally, the packets communicated often vary in size, that is, the packets may contain varying amounts of data. The sizes of the packets are quantized in minimum units of data, commonly bytes. Further complexity in calculating CRC values may be added when the number of bits of data operated on in parallel is greater than the size of the units of data in the packets.